package com.talent.service.iot.mqtt.service;

import com.talent.service.iot.mqtt.model.TlMqttSession;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

/**
 * @ClassName：IMqttSessionService
 * @Author: hszhou
 * @Date: 2025/1/7 9:32
 * @Description: 必须描述类做什么事情, 实现什么功能
 */
public interface IMqttSessionService {


    /**
     * 存储
     * @param session
     * @return
     */
    Mono<TlMqttSession> save(TlMqttSession session);

    /**
     * 通过 clientId 获取会话
     * @param clientId
     * @return
     */
    Mono<TlMqttSession> find(String clientId);

    /**
     * 清理会话
     * @param clientId
     * @return
     */
    Mono<Boolean> clear(String clientId);

    /**
     * 检查 clientId 关联的 session 是否存在
     * @param clientId
     * @return
     */
    Boolean hasKey(String clientId);


    Flux<String> clients();



}
